package com.aiwiown.snackmq.cluster.metadata;

import com.alipay.sofa.jraft.entity.PeerId;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;

/**
 * 描述一个分区的所有信息。
 * 包括主题名称、分区ID、副本列表、领导者以及版本号。
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class PartitionInfo implements Serializable {

    private static final long serialVersionUID = -6029645565285228783L;
    /**
     * 主题名称。
     */
    private String topicName;

    /**
     * 分区ID。
     */
    private int partitionId;

    /**
     * 副本列表，包含该分区的所有副本节点信息。
     */
    private List<PeerId> replicas;

    /**
     * 领导者，表示当前分区的领导者副本。
     */
    private PeerId leader;

    /**
     * 版本号，用于表示分区信息的版本，通常用于比较和更新操作。
     */
    private long version;
}
